package com.example.demo.huawei;

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class Main45_2 {
    public static void main(String[] args) {
        // 创建Scanner对象，用于从控制台读取数据
        Scanner scanner = new Scanner(System.in);
        // 读取员工个数n
        int n = scanner.nextInt();

        // 创建一个List来存储员工的ID和分数，每个员工的信息存储在一个长度为2的int数组中
        List<int[]> scoreList = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            // 对于每个员工，读取他们的ID和分数，并将它们作为一个数组添加到scoreList中
            scoreList.add(new int[]{scanner.nextInt(), scanner.nextInt()});
        }

        // 关闭Scanner对象
        scanner.close();

        // 按照分数(scoreList中每个数组的第二个元素)对scoreList进行升序排序
        scoreList.sort(Comparator.comparingInt(a -> a[1]));

        // 初始化最小分差为Integer的最大值，用于后续寻找最小分差
        int minDiff = Integer.MAX_VALUE;
        // 创建一个List来存储分差最小的员工ID对
        List<int[]> pairs = new ArrayList<>();

        // 双重循环，比较每对员工的分数差
        for (int i = 0; i < n - 1; i++) {
            for (int j = i + 1; j < n; j++) {
                // 计算当前遍历到的两个员工的分数差
                int curDiff = scoreList.get(j)[1] - scoreList.get(i)[1];

                // 如果当前分差小于已记录的最小分差
                if (curDiff < minDiff) {
                    // 清空pairs列表，因为我们找到了更小的分差
                    pairs.clear();
                    // 更新最小分差
                    minDiff = curDiff;
                    // 将当前的员工ID对添加到pairs中，注意保证ID较小的在前
                    pairs.add(new int[]{Math.min(scoreList.get(i)[0], scoreList.get(j)[0]), Math.max(scoreList.get(i)[0], scoreList.get(j)[0])});
                } else if (curDiff == minDiff) {
                    // 如果当前分差等于已记录的最小分差，则直接将该员工ID对添加到pairs中
                    pairs.add(new int[]{Math.min(scoreList.get(i)[0], scoreList.get(j)[0]), Math.max(scoreList.get(i)[0], scoreList.get(j)[0])});
                } else {
                    // 由于scoreList已按分数升序排序，如果当前分差大于最小分差，则后续不会再有更小的分差，直接跳出内层循环
                    break;
                }
            }
        }

        // 对找到的员工ID对进行排序，首先按第一个ID(p1)升序排序，如果第一个ID相同，则按第二个ID(p2)升序排序
        pairs.sort(Comparator.<int[]>comparingInt(a -> a[0]).thenComparingInt(a -> a[1]));

        // 遍历pairs，按题目要求格式输出每对员工ID
        for (int[] pair : pairs) {
            System.out.println(pair[0] + " " + pair[1]);
        }
    }
}
